#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-
#---------------------------------pyig----------------1400CircGonio.py--#
#                                                                       #
#                       Funzioni goniometriche                          #
#                                                                       #
#--Daniele Zambelli---------------GPL----------------------------2008---#

"""
Seno, coseno tangente

Problema
- Disegna una circonferenza non modificabile.
- Disegna un angolo al centro con un lato fisso sull'asse x.
- Disegna i segmenti corrispondenti al sen, cos, tg.

Soluzione
- I punti base della circonferenza non devono essere visibili.
- Disegna dei punti sulla circonferenza come riferimento (PointOn).
- Disegna un punto mobile sulla circ. che serva per modificare l'angolo.
- Visualizza dei testi con i valori di sen cos e tg.

"""

from pyig import *

###
# Circonferenza
###
raggio=6.
o=Point(0, 0, False)
x=Point(raggio, 0, False)
c0=Circle(o, x)
for ii in range(24):
  PointOn(c0, ii/12., color="red")
  
###
# Angolo
###
c1=Circle(o, Point(raggio+2, 0, False), visible=False)
p=ConstrainedPoint(c1, 0, width=5, name="P")
r0=Ray(o, x)
r1=Ray(o, p)
a0=Angle(x, o, p)
i=LineCircleIntersection(r1, c0, 1)

###
# Rette di riferimento
###
assex=Line(o, x, False)
assey=Line(o, Point(0, raggio, False), False)
asset=Line(x, Point(raggio, raggio, False), width=1, color="black")
parx=Parallel(assex, i, width=1, color="blue")
pary=Parallel(assey, i, width=1, color="red")

###
# Intersezioni con i riferimenti
###
ix=LineLineIntersection(assex, pary, color="red")
iy=LineLineIntersection(assey, parx, color="blue")
it=LineLineIntersection(asset, r1, color="yellow")

###
# Segmenti goniometrici
###
sen=Segment(o, iy, width=3, color="blue")
cos=Segment(o, ix, width=3, color="red")
tan=Segment(x, it, width=3, color="yellow")

pos=-6
Text(-5, pos, """Funzioni goniometriche.""")
s=Calc("%s/%s", (sen.length(), raggio))
c=Calc("%s/%s", (cos.length(), raggio))
t=Calc("%s/%s", (tan.length(), raggio))
VarText(-5, pos-1, """|sen| = %s.""", s)
VarText(-5, pos-1.5, """|cos| = %s.""", c)
VarText(-5, pos-2, """!tan| = %s.""", t)

###
# Attivazione della finestra interattiva
###

pyigplane.mainloop()
